home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 1.iso / ARGONET / PD / DESKTOP / IBARP-1.SPK / Source / hdr / debug next >
Text File  |  1998-04-24  |  2KB  |  82 lines

  1.  
  2.  [ :LNOT: :DEF: HDR_DEBUG
  3.  GBLS    HDR_DEBUG
  4.  
  5.  GET    OS:hdr.FileSwitch
  6.  GET    hdr.ibpatch
  7.  
  8.  
  9.  GBLA    debug_count
  10. debug_count    SETA     0
  11.  
  12. ; Macro to output a fixed debugging message
  13. ; Takes a string message and its terminator (10 for add newline, 0 for none)
  14. ; and needs r12 to point to workspace
  15. ; Preserves registers but may corrupt flags
  16. ; Does nothing if debugging is not on
  17.  MACRO
  18.  DEBUG_MSG    $message, $term
  19.  [ :DEF:DEBUG
  20. debug_count    SETA     debug_count + 1
  21.  stmfd    sp!, {r0-r2, lr}
  22.  adr    r2, debug_msg_data$debug_count
  23.  ldr    r1, [r12, #block_debug_file]
  24. debug_msg_loop$debug_count
  25.  ldrb    r0, [r2]
  26.  cmp    r0, #0
  27.  addne    r2, r2, #1
  28.  swine    XOS_BPut
  29.  bne    debug_msg_loop$debug_count
  30.  b    debug_msg_finish$debug_count
  31. debug_msg_data$debug_count
  32.  = "$message", $term, 0
  33.  ALIGN
  34. debug_msg_finish$debug_count
  35.  ldmfd    sp!, {r0-r2, lr}
  36.  ]
  37.  MEND
  38.  
  39. ; Macro to output a number to the debugging file
  40. ; Takes the register (except r10) with the number we want,
  41. ; and needs r12 to point to our workspace
  42. ; Preserves registers but may corrupt flags
  43. ; Does sod all if debugging is turned off
  44.  GBLL    debug_int_buffer_created
  45. debug_int_buffer_created    SETL     {FALSE}
  46.  MACRO
  47.  DEBUG_INT    $register
  48.  [ :DEF:DEBUG
  49. debug_count    SETA     debug_count + 1
  50.  stmfd    sp!, {r0-r2, lr}
  51. ; convert to string
  52.  mov    r0, $register
  53.  adrl    r1, debug_int_buffer
  54.  mov    r2, #16
  55.  swi    XOS_ConvertInteger4
  56. ; now prepare to output via OS_BPut
  57. ; r2 will be the pointer to the string
  58.  mov    r2, r0
  59.  ldr    r1, [r12, #block_debug_file]
  60. debug_int_loop$debug_count
  61.  ldrb    r0, [r2]
  62.  cmp    r0, #0
  63.  addne    r2, r2, #1
  64.  swine    XOS_BPut
  65.  bne    debug_int_loop$debug_count
  66.  [ :LNOT:debug_int_buffer_created
  67. debug_int_buffer_created    SETL    {TRUE}
  68.  b    debug_int_buffer_end
  69. ; reserve a little buffer to store our number (16 bytes)
  70. ; I know this is not good practice, but it's only debugging code
  71. debug_int_buffer
  72.  DCD    0, 0, 0, 0
  73. debug_int_buffer_end
  74.  ]
  75.  ldmfd    sp!, {r0-r2, lr}
  76.  ]
  77.  MEND
  78.  
  79.  
  80.  ]
  81.  END
  82.